package gui;

import java.util.Observable;
import java.util.Observer;

import java.awt.Dialog;
import java.awt.Frame;
import java.awt.BorderLayout;
import java.awt.Panel;
import java.awt.Button;
import java.awt.Label;
import java.awt.List;

import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.ActionEvent;

import daten.Diplomarbeit;
import daten.DiplomarbeitenContainer;

public class DiplomarbeitenListe extends Dialog implements ActionListener, Observer
	{
		  	private DiplomarbeitenContainer container = DiplomarbeitenContainer.instance();
		  	private List liste;

		  	private void befuelleListe()
			{
				for (Diplomarbeit p: container)
					liste.add(p.toString());
			}
		  	
		  	public void update(Observable o, Object arg){
		  		liste.removeAll();
		  		befuelleListe();
		  	}

			public DiplomarbeitenListe(Frame owner)
			{
				super(owner, "Diplomarbeit aus Liste auswählen", false);
				container.addObserver(this);

				setLayout(new BorderLayout());

				Panel p1 = new Panel();
				p1.add(new Label("Diplomarbeitenliste: "));
				add("North", p1);

				liste = new List(10, false);
				befuelleListe();
				add("Center", liste);

				Panel p = new Panel();
				Button abbrechen = new Button("Abbrechen");
				abbrechen.addActionListener(this);
				p.add(abbrechen);

				Button ok = new Button("Auswaehlen");
				ok.addActionListener(this);
				p.add(ok);

				Button loeschen = new Button("Loeschen");
				loeschen.addActionListener(this);
				p.add(loeschen);
				add("South", p);

				pack();
				setLocation(owner.getLocation().x + 10, owner.getLocation().y + 10);
				setVisible(true);
			}
			
			private void onAbbrechen()
			{
				dispose();
			}

			private void onAuswaehlen()
			{
				Diplomarbeit p = getDiplomarbeit();
				if (p==null){
					System.out.println("Diplomarbeit nicht vorhanden!");
					return;
				}
				new DiplomarbeitEditieren(this, p);
				container.modified();
			}

			private void onLoeschen()
			{
				Diplomarbeit p = getDiplomarbeit();
				if (p==null){
					System.out.println("Diplomarbeit nicht vorhanden!haha");
					return;
				}
				container.removeDiplomarbeit(p);
			}
			
			public Diplomarbeit getDiplomarbeit(){
				if (liste.getSelectedItem() != null)
				{
					for (Diplomarbeit p: container)
						if (p.toString().equals(liste.getSelectedItem()))
						{
							return p;
						}
				}
				return null;
			}

			public void actionPerformed(ActionEvent e)
			{
				if (e.getActionCommand().equals("Abbrechen"))
					onAbbrechen();

				if (e.getActionCommand().equals("Auswaehlen"))
					onAuswaehlen();

				if (e.getActionCommand().equals("Loeschen"))
					onLoeschen();
			}
}
